package com.jt.provider.controller;

import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 基于此Controller演示配置中心的作用
 * 在这个Controller中我们基于日志对象进行日志输出测试
 */
@Slf4j
@RefreshScope
@RestController
public class ProviderLogController {
        //org.slf4j.Logger;(java中的日志API规范，基于该规范有log4j,logback等日志库)
        //org.slf4j.LoggerFactory;
//    private static Logger log = LoggerFactory.getLogger(ProviderLogController.class);
        /**
         * 假如在log对象所在类中使用了@slf4j注解，log不再需要手动创建，lombok会帮我们创建
         * */
    @GetMapping("/provider/log/doLog01")
    public String doLog01() { //trace<debug<info<warn<error
        System.out.println("======doLog01======");
        log.trace("==trace==");
        log.debug("==debug==");
        log.info("==info信息==");
        log.warn("==warn警告==");
        log.error("==error错误==");
        return "log config test";
    }

    public ProviderLogController(){
        System.out.println("====ProviderLogController对象初始化====");
    }

    /**
     * 该配置何时读取？====>logLevel属性初始化时
     *  logLevel属性何时初始化？==>对象创建时
     *  如何让logLevel属性值与配置中心的值始终同步？==>修改配置中心的内容，就重建对象，然后属性值自然重新初始化
     * */
    @Value("${logging.level.com.jt:error}")
    private  String logLovel;
    @GetMapping("/provider/log/doLog02")
    public String doLog02(){
        log.info("log.level is {}",logLovel);//这里的{}表示占位符
        return "log level is " + logLovel;
    }
}
